package com.adee.primary.t01_arr;

import com.adee.util.Util;

import java.util.Arrays;

/**
 * 移动零
 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 *
 * 请注意，必须在不复制数组的情况下原地对数组进行操作。
 */
public class T008 {
    public static void main(String[] args) {
        int[] arr = {0,1,0,3,12};
        Util.print(arr);
        int i = 0, j = 0; // i表示该放到第i的位置，j表示便利到的不为0的元素位置
        int len = arr.length;
        while (i < len && j < len) {
            while (j < len && arr[j] == 0) {
                ++j;
            }
            if (j == len) {
                break;
            }else if(i != j) {
                arr[i++] = arr[j++];
            } else {
                ++i;
                ++j;
            }
        }
        // 此时，i为该放到的第i的位置，第j位置不为0
        if (i < len) {
            Arrays.fill(arr, i, len, 0);
        }
        Util.print(arr);
    }
}
